import com.mysql.jdbc.Connection;
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.*;
import java.util.Random;
import java.util.Scanner;

public class testmysql {

    public static void main(String[] args) throws SQLException, ClassNotFoundException {
        // 方式一：
//        DataSource dataSource = new MysqlDataSource();
//        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java102?characterEncoding=utf8&urlSSL=false");
//        ((MysqlDataSource)dataSource).setUser("root");
//        ((MysqlDataSource)dataSource).setPassword("root");
        Class.forName("com.mysql.jdbc.Driver");
        String url = "jdbc:mysql://localhost:3306/java102?user=root&password=root&characterEncoding=utf8&urlSSL=false";
        java.sql.Connection connection = DriverManager.getConnection(url);
        //Connection connection = (Connection)dataSource.getConnection();
        String sql = "select * from student";
        PreparedStatement statement = connection.prepareStatement(sql);

        // 开始执行
        ResultSet resultSet = statement.executeQuery();
        while(resultSet.next()){
            int id = resultSet.getInt("id");
            String name = resultSet.getString("name");
            System.out.println(id+name);
        }
        resultSet.close();
        statement.close();
        connection.close();
    }

    public static void main3(String[] args) throws SQLException {
        // 选择数据源
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://localhost:3306/java102?characterEncoding=utf8&&useSSL=false");
        // 设置登录用户和密码
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("root");

        //  配置设置好了， 开始连接数据库
        Connection connection = (Connection) dataSource.getConnection();

        // 连接成功后 ，开始写语句 并且之后执行测试
        String sql = "";
        sql = "update student set name= + '李四' where id =1;";
        sql+="insert into student values (18, '你爸爸的');";
        sql+="select * from student;";
        // 检测证明不能 在一条sql中一次性执行多条语句

        PreparedStatement statement = connection.prepareStatement(sql);

        // 然后就可以执行了
        int ret = statement.executeUpdate();
        System.out.println(ret);
        // 回收ziyuan
        statement.close();
        connection.close();


    }

    public static void main2 (String[] args) throws SQLException {
        Scanner scanner = new Scanner(System.in);

        // 1.创建数据源
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java102?characterEncoding=utf8&useSSL=false");
        // 设置登录用户名
        ((MysqlDataSource)dataSource).setUser("root");
        // 设置登录数据库密码
        ((MysqlDataSource)dataSource).setPassword("root");

        // 2. 让代码和数据库服务器建立连接
        Connection connection = (Connection) dataSource.getConnection();
        // 让用户通过控制台输入待插入的数据
//        System.out.println("请输入学号");
//        int id = scanner.nextInt();
//        System.out.println("请输入姓名:");
//        String name = scanner.next();

        // 3.操作数据库， 一查汇入数据为例
        // 这里操作的关键在于  构造SQL语句
        // 在JDBC中 构造SQL，不用带；
        //region  魔改部分
//        for (int i = 0; i < 20; i++) {
//            String sql = "insert into student values";
//            sql+="("+getRandomInt()+',';
//            sql += getRandomChar()+getRandomChar()+")";
//            PreparedStatement statement = connection.prepareStatement(sql);
////            statement.setInt(1, id);
////            statement.setString(2, name);
//            System.out.println("statement: " + statement);
//            int ret = statement.executeUpdate();
//            System.out.println(ret);
//            statement.close();
//        }
        //endregion

        // 4. 执行SQL， 对于修改了数据库的操作如 insert， update.... 使用 executeUpdate方法
        // 对于未修改数据库内容的操作 使用 executeQuery 方法
        // 这两个方法的返回值  表示该 操作影响到了几行，
//        int ret = statement.executeUpdate();
//        System.out.println(ret);

        // 5 . 此时SQL已经执行完毕， 释放资源
        //
        connection.close();



    }

    public static char getRandomChar() {
        return (char) (0x4e00 + (int) (Math.random() * (0x9fa5 - 0x4e00 + 1)));
    }
    public static int getRandomInt(){
        Random random = new Random();

        return random.nextInt(100);
    }

    public static void main1(String[] args) {
        System.out.println(getRandomChar());
    }

}
